// 导入express框架
let express =require("express");
let path =require("path");
const bodyparser=require("body-parser");
const formidable =require("formidable")

// 创建服务器对象
const app = express();
// 配置bodyparser
app.use(bodyparser.json());

// 请求拦截实现静态资源访问
app.use(express.static(path.join(__dirname,"public")))

// 统一拦截请求并且配置CORS跨域资源共享
app.use((req,res,next)=>{
	// 1、允许那些客户端访问我，“*”代表允许所有的客户端访问我
	res.header("Access-Control-Allow-Origin","*");
	// 2、允许客户端通过那些请求方式来访问我
	res.header("Access-Control-Allow-Method","get,post");
	// res.header("Access-Control-Allow-Method","post");
	// 允许客户端发送请求时携带cookie信息
	res.header("Access-Control-Allow-Credentials",true);
	next();

})






// 写第1个请求方式为get方式的处理JSONP的路由
app.get("/text",(req,res)=>{
	// 需要注意的是：该服务器返回的结果是客户端函数的调用，但必须以字符串形式返回，否则就会在服务器端就被执行掉
	const result = 'fn({name:"张三"})'
	res.send(result);
})


// 写第2个请求方式为get方式的处理JSONP的路由

app.get("/better",(req,res)=>{
	// 接受客户端传来的函数名称
	// const fnName = req.query.callback;
	// 需要注意的是：该服务器返回的结果是客户端函数的调用，但必须以字符串形式返回，否则就会在服务器端就被执行掉
	// const result =fnName+'({name:"张三"})'

	// 从数据库中查询出来的对象	
	// const data = JSON.stringify({name:"张三"});
	// const result =fnName+'('+data+')';
	// setTimeout(()=>{
	// 	res.send(result);

	// },1000)


	res.jsonp({name:"lisi",age:26});

})





// 写一个用于CORS跨域资源共享的路由接口
app.get("/cross",(req,res)=>{
	// 1、允许那些客户端访问我，“*”代表允许所有的客户端访问我
	// res.header("Access-Control-Allow-Origin","*");
	// 2、允许客户端通过那些请求方式来访问我
	// res.header("Access-Control-Allow-Method","get,post");
	res.send("ok");
})




// 写一个跨域请求传递cookie的接口
app.post("/login",(req,res)=>{
	// 创建表单解析对象
	var form = formidable.IncomingForm();
	// 解析表单对象
	form.parse(req,(err,fields,file)=>{
		// 接受客户端传递过来的用户名和密码
		const{username,password}=fields;
		// 用户名密码对比
		if (username=="itheima" && password=="123456") {
			// 设置session
			req.session.isLogin = true;
			res.send({message:"登入成功！"});

		}else {
			res.send({message:"登入失败"});
		}
	})
});






// 监听端口port
app.listen(3001,()=>{
console.log("s2服务器启动成功！")
});









